//配置路由
//引入文件
import Vue from 'vue';
import VueRouter from 'vue-router';
//使用路由
Vue.use(VueRouter);
//引入store
import store from '@/store';
//引入路由组件
import routes from './routes';
//配置路由
    let router= new VueRouter({
        //配置路由
        routes,
        // 滚动行为
	    scrollBehavior(to,from,savedPosition) {
		return{x:0,y:0}
       }
    })
    //全局守卫 前置守卫 跳转之前判断
    router.beforeEach(async (to,from,next)=>{
        //next放行
        // next();
        //用户登录了 有token
        let token = store.state.user.token;
        //用户信息
        let name = store.state.user.userInfo.name;
        //如果登录了
        if(token){
            //用户已经登录不能去login页面
            if(to.path == '/login'){
                next('/home')
            }else{
                //登录去的是除login页面
                if(name){
                    next();
                }else{
                    //没有用户信息 派发action
                    try {
                        //获取用户信息成功
                       await  store.dispatch('getUserInfo')
                       next();
                    } catch (error) {
                        //token失效 重新登录
                      await store.dispatch('userLogout')
                        next('/login');
                    }
                  
                }
                
            }
        }else{
            //未登录
            // next();
            let toPath = to.path;
            if(to.path == '/trade' || toPath.indexOf('/pay')!== -1 || toPath.indexOf('/center')!== -1){
                //把未登录时候想去没有去成的信息 存储在地址栏
                next('/login?redirect=' + toPath)
            }else{
                next();
            }
        }
    })

    export default router;